﻿using System.Collections.Generic;
using MIAP.Entidades;

namespace MIAP.DataAccess.Interfaces
{
    /// <summary>
    /// Contrato del DAO de procesos de EjecutaProyectoDao.
    /// </summary>
    public interface IEjecutaProyectoDao
    {
        /// <summary>
        /// Obtiene todos los archivos obligatorios.
        /// </summary>
        /// <param name="archivoAsociadoFilters">Filtros para obtener los archivos obligatorios.</param>        
        /// <param name="esObligatorio">Indica si se buscan archivos obligatorios o no</param>
        /// <returns>Lista con los archivos obligatorios de acuerdo a los filtros.</returns>
        IList<ArchivoAsociadoProyectoInfo> GetArchivosObligatoriosAndNoObligatorios(ArchivoAsociadoProyectoInfo archivoAsociadoFilters, bool esObligatorio);

        /// <summary>
        /// Obtiene todas las cargas y recargas de archivos realizadas de acuerdo a los filtros.
        /// </summary>
        /// <param name="archivoAsociadoFilters">Filtros para la búsqueda.</param>
        /// <returns>Lista con las cargas y recargas de archivos.</returns>
        IList<ArchivoCargadoInfo> GetCargasRealizadasByPeriodo(ArchivoAsociadoProyectoInfo archivoAsociadoFilters);

        /// <summary>
        /// Registra la ejecucion del proyecto en la base de datos
        /// </summary>
        /// <param name="proyecto">proyecto que ejecutaremos</param>
        /// <param name="user">usuaio al que se le registrará le ejecucion</param>
        int EjecutaProyecto(ListaInfo proyecto, UsuarioInfo user);
    }
}
